The core issue with a simple array queue is that its indices only move forward, never resetting.

  • While `enQueue` increments `rear` and `deQueue` increments `front`, the indices move linearly across the array.
  • This linear progression means that space freed by `deQueue` operations at the lower indices is permanently unusable.
  • This inefficiency leads to the critical drawback of Artificial Overflow.
  • We define the queue as full when the `rear` index reaches MAX_SIZE (in our running example, 5).
  • If `rear` reaches `MAX_SIZE`, the queue reports "full", even if significant unused space exists at the beginning of the array.
  • The queue becomes unusable until it is completely re-initialized.
  • While core operations are $O(1)$, workarounds like shifting all elements to fix this issue force an unacceptable $O(n)$ operation.

Naive Array Queue Properties

Property Assessment Reason
enQueue $O(1)$ Fails on artificial overflow.
deQueue $O(1)$ Wastes space by not reclaiming it.
Space Efficiency Poor Leads to unusable empty slots.